#!/bin/bash
set -e
ip_file_name="servers.txt"
echo "请输入IP范围（格式：192.168.10.10-20, 192.168.20.30-40）："
read -r ip_ranges

# 分割输入的IP范围
IFS=',' read -ra ip_ranges_array <<< "$ip_ranges"

# 处理每个IP范围
for ip_range in "${ip_ranges_array[@]}"; do
  # 获取起始IP和结束IP
  start_ip=$(echo "$ip_range" | cut -d'-' -f1)
  end_ip=$(echo "$ip_range" | cut -d'-' -f2)

  # 提取起始IP的最后一个字段
  base_ip=$(echo "$start_ip" | awk -F'.' '{print $1"."$2"."$3"."}')

  # 将起始IP和结束IP的最后一个字段转换为数字
  start_num=$(echo "$start_ip" | awk -F'.' '{print $4}')
  end_num=$end_ip

  # 非空检查
  if [[ -z "$start_num" || -z "$end_num" ]]; then
    echo "起始IP或结束IP的最后一个字段为空，请重新输入正确的IP范围。"
    exit 1
  fi

  # 循环生成IP数组
  for ((i=start_num; i <= end_num; i++)); do
    # 检查是否存在重复IP
    if [[ -f "$ip_file_name" && $(grep -c "${base_ip}${i}" "$ip_file_name") -gt 0 ]]; then
      echo "该IP已存在，跳过: ${base_ip}${i}"
      continue
    fi
    ip="${base_ip}${i}"
    echo "$ip" >> "$ip_file_name"
    ip_array+=("$ip")
  done
done
echo "添加完成"
cat "$ip_file_name"